/*
 * ElectionManager.h
 *
 *  Created on: 12/10/2011
 *      Author: mario
 */

#ifndef ELECTIONMANAGER_H_
#define ELECTIONMANAGER_H_

#include "../Eleccion.h"
#include "../Votante.h"
#include "../Lista.h"

#include "UserManager.h"
#include "ResultManager.h"
#include "../../util/List.h"
#include "../../util/Utils.h"
#include "../log/Logger.h"

class ElectionManager {
private:
	Votante* user;
	Eleccion* eleccion;
	UserManager* userManager;
	List* listas;
protected:
	Eleccion *getEleccion() const;
	void setEleccion(Eleccion *eleccion);
	List *getListas() const;
	void setListas(List *listas);
public:
	ElectionManager();
	virtual ~ElectionManager();
    Votante *getUser() const;
    void setUser(Votante *user);
    int login(int userId, string password);
    void logout();
    int selectEleccion(Eleccion* eleccion);
    int confirmVote(Lista *lista);
    List *getListasDisponibles() const;
    List *getEleccionesDisponibles() const;
    UserManager *getUserManager() const;
    void setUserManager(UserManager *userManager);
    void resetEleccion();
    List* getResultadosCompletos(int distrito,int eleccion,int lista);
};

#endif /* ELECTIONMANAGER_H_ */
